package com.company.class7;

import com.company.class4.Washmachine;

/**
 * @Classname StringConvertTest
 * @Description 类型说明
 * @Date 2022/5/1 16:33
 * @Created by zbw
 */

public class StringConvertTest {
    public static void main(String[] args){
        System.out.println("输出是"+1);
        String s = "输入是"+1;
        //将其他类型转换成字符串的方法：
        //1、拼接一个字符串
        //""   空字符串
        String s1 = 213+"";
//        String s2 = 213;
        Washmachine zbw = new Washmachine();
        System.out.println(zbw);
        //一个类类型转换成字符串的时候，实际上会先调用toString方法，转换成字符串
        //toString也是一个转换的方法。
//        String s2 = zbw.toString();
//        System.out.println(s2);

        //2、toString方法来完成String类型的转换，前提是这个变量是个类对象，不是基本的数据类型
        Integer i =213;
        String s3 = i.toString();
        System.out.println(s3);
        int i1 = 213;

        //3、valueOf
        //s1/s3/s4/s5 全都是213
        String s4 = String.valueOf(213);
        String s5 = String.valueOf(213);
        String s2 = null;
        //必须要处理的异常，否则就会报错，就可以用throws抛出不作处理，也可以用try catch。
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //==不相等的原因，是因为在比较的时候，比较了两个对象的内存地址。
        //因此，在比较的时候一定是用equals方法。
        System.out.println(s1==s3);
        System.out.println(s1.equals(s3));
        //推荐使用 值.equals(变量)的写法，而不要用变量.equals("值")
        System.out.println(s1.equals("213"));
        System.out.println("213".equals(s1));

        System.out.println(s4==s5);
        //能够避免出现意料之外的空指针异常
        System.out.println(s4.equals(s5));
        try {
            System.out.println(s2.equals("213"));
        }catch(Exception e){
            //输出异常信息到控制台
            e.printStackTrace();
            System.out.println("不好意思，字符串是个null，不能调用");
        }
        //无论是try中的语句执行了，还是catch中的语句执行了，最终都要执行这个。
        finally {
            System.out.println("无论如何都要执行的");
        }
        System.out.println("比较结果为："+"213".equals(s2));

        //将字符串转为其他类型：
        //转换的时候限制于转换为基本数据类型(boolean 和 Character 类型除外)
        //包装类型可以自动转换为对应的基本数据类型
        int i2 = Integer.parseInt("233");
        System.out.println(i2+444);
        System.out.println(s4+444);

        float v = Float.parseFloat("333");
        System.out.println(v);

        //转换异常
        try {
            int a = Integer.parseInt("a");
            System.out.println(s2.equals("213"));
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("出错啦");
        }


    }
}
